function levelUp(tutorial_id) {
	var parametros = {
		"tutorial"	: tutorial_id
	};
	$.ajax({
		data:  parametros,
		url:   'php/level.php',
		type:  'post',
		success: function (response) {
			if(response == 'OK'){
				return;
			} else {
				alert(response);
				$('#usuario').load(location.href + ' #usuario');
			}
			
		}
	});
}

function tecla(event) {
	// desactivar backspace fuera de inputs y textareas
	var nodeName = event.target.nodeName.toLowerCase();
	var code = (event.keyCode || event.which);
    if (code == 8 && nodeName != 'input' && event.target.type !== 'text' && nodeName != 'textarea' && event.target.contentEditable != 'true') {
		event.preventDefault();
    }    
    if (document.getElementById('mouse') && code == 77) { // M
        load('pages/mouse.php');
    } else if (document.getElementById('touchpad') && code == 84) { // T
        load('pages/touchpad.php');
    } else if(document.getElementById('teclado')) {
        switch(code) {
        case 9: mostrar('tab'); event.preventDefault(); break;
        case 16: mostrar('shift'); break;
        case 17: mostrar('ctrl'); return false;
        case 18: mostrar('alt'); event.preventDefault(); break;
        case 13: mostrar('enter'); break;
        case 8: mostrar('backspace'); event.preventDefault(); break;
        case 34: mostrar('comillas'); break;
        case 64: mostrar('arroba'); break;
        }
    } else if (document.getElementById('reproductor') && code == 27) { // Esc
		window.scrollTo(0, document.body.scrollHeight);
	}
}

function teclaArchivo(event) {
    var code = (event.keyCode || event.which);
    switch(code) {
    case 34: // "
    case 35: // #
    case 37: // %
    case 42: // *
    case 47: // /
    case 58: // :
    case 60: // <
    case 62: // >
    case 63: // ?
    case 92: /* \ */
    case 123: // {
    case 124: // |
    case 125: // }
    case 126: // ~
        event.preventDefault();
    }
}

function visible(id) {
	return !$('#'+id).hasClass('oculto');
}

function mostrar(id) {
    $('#'+id).toggleClass('oculto', false);
    $('#'+id).toggleClass('visible', true);
}

function ocultar(id) {
    $('#'+id).toggleClass('visible', false);
    $('#'+id).toggleClass('oculto', true);
}

function incluir(id) {
	$('#'+id).toggleClass('excluido', false);
    $('#'+id).toggleClass('block', true);	
}

function excluir(id) {
	$('#'+id).toggleClass('block', false);
	$('#'+id).toggleClass('excluido', true);
}

function able(bool, id) {
    if(bool) {
        enable(id);
    } else {
        disable(id);
    }
}

function enable(id) {
    $('#'+id).toggleClass('disabled', false);
    $('#'+id).toggleClass('enabled', true);
}

function disable(id) {
    $('#'+id).toggleClass('enabled', false);
	$('#'+id).toggleClass('disabled', true);
}

function obtenerDispositivo() {
    var dispositivo = '';
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('android') != -1) {
        dispositivo += 'Celular/Tableta';
        document.cookie='disp=mobile';
    } else {
        dispositivo += 'Escritorio/Portátil';
        document.cookie='disp=top';
    }
    return dispositivo;
}

function obtenerSO() {
    var so = '';
    var ua = window.navigator.userAgent.toLowerCase();

    if (ua.indexOf('win') != -1) {
        so += 'Windows' + ' ' + versionWindows();
    } else if (ua.indexOf('android') != -1) {
        var ua = navigator.userAgent;
        var i = ua.indexOf('Android');
        so += ua.substring(i, ua.indexOf(';', i));
        document.cookie='so=android';
    } else if (ua.indexOf('linux') != -1) {
        so += 'Linux';
        document.cookie='so=android'; //Sin implementacion de Editor de texto
    }
    return so;
}	
	
function versionWindows() {
    var version;
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('nt 5.1') != -1) {
        version = ' XP';
        document.cookie='so=xp';
    } else if (ua.indexOf('nt 6.1') != -1) {
        version = ' 7';
        document.cookie='so=w7';
    }
    return version;
}

function obtenerNavegador() {
    var navegador = '';
    var nVer = navigator.appVersion;
    var nAgt = navigator.userAgent;
    var browserName  = navigator.appName;
    var fullVersion  = '' + parseFloat(navigator.appVersion); 
    var majorVersion = parseInt(navigator.appVersion,10);
    var nameOffset, verOffset, ix;

    if ((verOffset=nAgt.indexOf("MSIE")) != -1) {
        // Hasta el MSIE 10, la versión está después de "MSIE"
        browserName = "Internet Explorer";
        fullVersion = nAgt.substring(verOffset+5);
        document.cookie='nav=ie';
    } else if ((verOffset=nAgt.indexOf("NET")) != -1) {
        // Desde el MSIE 11, la versión está después de rv
        browserName = "Internet Explorer";
        var x = navigator.appVersion.indexOf("rv:") + 3;
        fullVersion = navigator.appVersion.substring(x);
        document.cookie='nav=ie';
    } else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
        // In Chrome, the true version is after "Chrome" 
        browserName = "Google Chrome";
        fullVersion = nAgt.substring(verOffset+7);
        document.cookie='nav=chrome';
    } else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
        // In Firefox, the true version is after "Firefox" 
        browserName = "Mozilla Firefox";
        fullVersion = nAgt.substring(verOffset+8);
        document.cookie='nav=ff';
    } else if ((nameOffset = nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/'))) {
        // In most other browsers, "name/version" is at the end of userAgent 
        browserName = nAgt.substring(nameOffset, verOffset);
        fullVersion = nAgt.substring(verOffset+1);
        if (browserName.toLowerCase() == browserName.toUpperCase()) {
            browserName = navigator.appName;
        }
        document.cookie='nav=chrome';
    }
		
    // trim the fullVersion string at semicolon/space if present
    if ((ix = fullVersion.indexOf(";")) != -1)
       fullVersion = fullVersion.substring(0, ix);
    if ((ix = fullVersion.indexOf(" ")) != -1)
       fullVersion = fullVersion.substring(0, ix);
       
    majorVersion = parseInt('' + fullVersion, 10);
    if (isNaN(majorVersion)) {
        fullVersion  = '' + parseFloat(navigator.appVersion); 
        majorVersion = parseInt(navigator.appVersion, 10);
    }

    navegador += browserName + ' ' + majorVersion;
    return navegador;
}

function mostrarEntorno(dispositivo, sistema, navegador) {
    $('#disp').html(dispositivo);
    $('#so').html(sistema);
    $('#nav').html(navegador);
}

function obtenerEntorno() {
    obtenerDispositivo();
    obtenerSO();
    obtenerNavegador();
}

function checkRadiosFromCookie() {
    var cookies = document.cookie.split(';');
	for (var i = 0; i < cookies.length; i++) {
        var map = cookies[i].trim().split('=');
        var e = document.getElementById(map[1]);
        if (e) {
            e.checked = true;
        }
    }
}

function guardarEntornoEnCookie(disp, so, nav) {
    document.cookie = 'disp=' + getCheckedRadioId(disp);
    document.cookie = 'so=' + getCheckedRadioId(so);
    document.cookie = 'nav=' + getCheckedRadioId(nav);
    mostrarEntorno(getCheckedRadioText(disp), getCheckedRadioText(so), getCheckedRadioText(nav));
}

function getCheckedRadioId(name) {
    return $('input[name=' + name + ']').filter(':checked').attr('id');
}

function getCheckedRadioText(name) {
    return $('input[name=' + name + ']').filter(':checked').parent().text();
}

function enfocar(idElemento) {
    $('#'+idElemento).focus();
}

function desenfocar(idElemento) {
    $('#'+idElemento).blur();
}

function borrar(idElemento) {
    $('#'+idElemento).value = '';
}

function esTextoVacio(idElemento) {
    return document.getElementById(idElemento).value.trim() == '';
}

function esTextoLargo(idElemento, largo) {
    var e = document.getElementById(idElemento);
    return e.value.trim().length >= largo;
}

function equals(idElemento, texto) {
    var e = document.getElementById(idElemento);
    return e.value.trim() == texto;
}

function asignar(idVariable, valor){
    document.getElementById(idVariable).innerHTML = valor;
}

function toggleFullScreen() {
    if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {
        if (document.documentElement.requestFullscreen) {
            document.documentElement.requestFullscreen();
        } else if (document.documentElement.msRequestFullscreen) {
            document.documentElement.msRequestFullscreen();
        } else if (document.documentElement.mozRequestFullScreen) {
            document.documentElement.mozRequestFullScreen();
        } else if (document.documentElement.webkitRequestFullscreen) {
            document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
        }
    } else {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        } else if (document.msExitFullscreen) {
            document.msExitFullscreen();
        } else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        } else if (document.webkitExitFullscreen) {
            document.webkitExitFullscreen();
        }
    }
}

const MIN_FONT_SIZE = 50;
const DEFAULT_FONT_SIZE = 100;
const MAX_FONT_SIZE = 150;
var fontSize;

function loadMain() {
    getMainStyle().fontSize = fontSize + '%';
}

function resizeText(multiplier) {
    var style = getMainStyle();
    if (multiplier == 0) {
        style.fontSize = DEFAULT_FONT_SIZE + "em";
    }
    var newSize = parseInt(style.fontSize) + multiplier * 10;
    if (newSize >= MIN_FONT_SIZE && newSize <= MAX_FONT_SIZE) {
        fontSize = Math.round(newSize);
        style.fontSize = fontSize + '%';
        document.getElementById('size').innerHTML = fontSize;
    }
}

function restaurar() {
    resizeText(0);
    disable('restaurar');
    if (!isMaxFontSize()) {
        enable('agrandar');
    }
    if (!isMinFontSize()) {
        enable('achicar');
    }
}

function agrandar() {
    resizeText(1);
    able(!isDefaultFontSize(), 'restaurar');
    if (isMaxFontSize()) {
        disable('agrandar');
    }
    if (!isMinFontSize()) {
        enable('achicar');
    }
}

function achicar() {
    resizeText(-1);
    able(!isDefaultFontSize(), 'restaurar');
    if (isMinFontSize()) {
        disable('achicar');
    }
    if (!isMaxFontSize()) {
        enable('agrandar');
    }
}

function getMainStyle() {
    var style = document.getElementById('main').style;
    if (style.fontSize == "") {
        style.fontSize = DEFAULT_FONT_SIZE + '%';
    }
    return style;
}

function isMinFontSize() {
    return parseInt(getMainStyle().fontSize) == MIN_FONT_SIZE;
}

function isMaxFontSize() {
    return parseInt(getMainStyle().fontSize) == MAX_FONT_SIZE;
}

function isDefaultFontSize() {
    return parseInt(getMainStyle().fontSize) == DEFAULT_FONT_SIZE;
}


/**
 * Tiene que recibir:
 *  - la url a revisar
 *  - indicar si es obligatorio [1|0]. Si es obligatorio, devuelve
 *    false si la url esta vacia
 *  - indicar si validamos que la direccion pueda ser de un servidor
 *    ftp [1|0]
 * Devuelve True o False
 */
function isValidUrl(url,obligatory,ftp)
{
    // Si no se especifica el paramatro "obligatory", interpretamos
    // que no es obligatorio
    if(obligatory==undefined)
        obligatory=0;
    // Si no se especifica el parametro "ftp", interpretamos que la
    // direccion no puede ser una direccion a un servidor ftp
    if(ftp==undefined)
        ftp=0;
    
    if(url=="" && obligatory==0)
        return true;

    if(ftp)
        var pattern = /^(http|https|ftp)\:\/\/[a-z0-9\.-]+\.[a-z]{2,4}/gi;
    else
        var pattern = /^(http|https)\:\/\/[a-z0-9\.-]+\.[a-z]{2,4}/gi;

    if(url.match(pattern))
        return true;
    else
        return false;
}


function BuscarEnGoogle(idElemento) {
	try {
		var pagina="https://www.google.com.ar/search?q="+document.getElementById(idElemento).value;
		var ventana=window.open("", "", "width=1000, height=1500");
		ventana.location=pagina;
		//Que la ventana se cierre después de 10 segundos.
		setTimeout(function(){ventana.close()}, 10000);
	} catch(e) {
		alert("Error en la función BuscarEnGoogle()");
	}		
}

function AbrirSitioWeb(idElemento) {
	try {
		var pagina="http://"+document.getElementById(idElemento).value;
		if(isValidUrl(pagina,1,0)){
		var ventana=window.open("", "", "width=1000, height=1500");
		ventana.location=pagina;
		//Que la ventana se cierre después de 10 segundos.
		setTimeout(function(){ventana.close()}, 10000);
		return 1;
		}
		else 
		{
		 alert('Dirección Inválida');
		}
	} catch(e) {
		alert("Error en la función AbrirSitioWeb()");
	}	
return 0;	
}

function validarCorreoElectronico(txtdir, txtasunto, txtmsg) {
    var regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    if (!regex.test(document.getElementById(txtdir).value)) {
        alert('Dirección de correo electrónico inválida.');
        enfocar('txtdir');
        return false;
    }
    
    if (esTextoVacio('txtasunto')) {
        alert('El campo Asunto debe contener algún texto.');
        enfocar('txtasunto');
        return false;
	}
	
	if (esTextoVacio('txtmsg')) {
        alert('El campo Texto debe contener algún texto.');
        enfocar('txtmsg');
        return false;
	}
	return true;
}

function mostrarNombreArchivo(input) {
    if(input.files && input.files[0]){
        document.getElementById('nombreArchivo').innerHTML = input.files[0].name;
    }
}

function load(page) {
    $('#main').load(page);
    window.scrollTo(0,0);
}

function loadLastPage() {
	var page = getCookieValue('last');
	if (page != null) {
		load(page);
	} else {
		load('pages/perifericos.php');
	}
}

function getCookieValue(key) {
	var cookies = document.cookie.split(';');
    for (var i = 0; i < cookies.length; i++) {
        var map = cookies[i].trim().split('=');
        if(map[0] == key) {
            return map[1];
        }
    }
	return null;
}

function AbrirVentana (tiempo) {
	var ventana=window.open('Prueba.htm', 'Ventana', 'width=5000', 'height=5000');
	ventana.location='pages/Prueba.htm';
	if(tiempo>0) {
    	setTimeout(function(){ventana.close()}, tiempo);
	}
	return ventana;
}
 
function MinimizarVentana() {
	var v=AbrirVentana(0);
	v.document.write('<html><body onblur="window.close()">Para Minimizar la ventana haga clic en el primer botón superior derecho <b>de esta ventana</b> como muestra la imagen <img src="img/InterfazGrafica/BotonMinimizar.jpg"></img></body></html>');
	v.document.close();
	return v;
} 

function MaximizarVentana() {
	var v=AbrirVentana(0);
    v.document.write('<html><body onblur="window.close();" onresize=" if(window.screenX==0 || window.screenX<0) {window.opener.name=window.name;window.resizeTo(0,0);window.close();}" >Para maximizar la ventana haga clic en el segundo botón superior derecho <b>de esta ventana</b> como muestra la imagen <img src="img/InterfazGrafica/BotonMaximizar.jpg"></body></html>');
    }
	
function CerrarVentana() {
	var v=AbrirVentana(0);
	v.document.write('<html><body>Para cerrar la ventana haga clic en el tercer botón superior derecho <b>de esta ventana</b> como muestra la imagen <img src="img/InterfazGrafica/BotonCerrar.jpg"></body></html>');
    return v;
}

function AlternarVentanas() {
	var b=AbrirVentana(0);
    b.document.write('Para alternar con la otra ventana haga clic sobre la otra ventana como muestra la imagen <img src="img/InterfazGrafica/AlternarVentanas.jpg"></p> ó Presione las teclas <img src="img/tecla-alt.png" height="64" title="A la izquierda de la barra espaciadora."></img> + <img src="img/tecla-tab.png" height="64" title="A la izquierda de la letra Q."></img>  ó también haga clic en el botón de minimizar ventana <img src="img/InterfazGrafica/BotonMinimizar.jpg"></img>.');
	return b;
}

function AbrirVentanaTemporal (dato) {
    var ventana=window.open('http://es.wikipedia.org/wiki/'+dato, 'Ventana', 'width=5000', 'height=5000');
    setTimeout(function(){ventana.close()}, 10000);
}

function AbrirVentanaWiki (){
    window.open('pages/wiki/NativoDigital.htm', 'Nativo Digital', 'width=5000', 'height=5000');
}

function NombreImagen (id,valor) {
   document.getElementById(id).innerHTML=document.getElementById(valor).value;
}

function ObtenerPosicionXDeUnDiv(id) {
   return document.getElementById(id).offsetTop-1;
}

function taphold(){
    $("#timbre").bind("taphold", tapholdHandler );
    function tapholdHandler( event ){
        mostrar('dragdrop');
    }
}

function draggable() {
    $("#draggable").draggable({ revert: "invalid" });
    $("#droppable").droppable({
        drop: function( event, ui ) {
            mostrar('zoom');
        }
    });
}

function pinchable() {
    $("#pinchable").on("touchy-pinch", function(e, $target, data) {
        mostrar('final');
    });
}

function loadTabs() {
    var tabTitle = $("#tab_title"),
        tabContent = $("#tab_content"),
        tabTemplate = "<li id='#{id}'><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-circle-close right' role='presentation'>Remove Tab</span></li>",
        tabCounter = 1,
        tabNumber = 1;
 
    var tabs = $("#tabs").tabs();

    $("#add_tab").button().unbind("click").click(function() {
        if (tabCounter < 3) {
            tabCounter++; tabNumber++;
            var label = tabTitle.val() || "Pestaña " + tabNumber,
                id = "tabs-" + tabCounter,
                li = $( tabTemplate.replace( /#\{id\}/g, 'li-' + tabNumber ).replace( /#\{href\}/g, "#" + id ).replace( /#\{label\}/g, label ) ),
                tabContentHtml = tabContent.val() || "Contenido de la pestaña " + tabNumber + ".";

            tabs.find(".ui-tabs-nav").append( li );
            tabs.append("<div id='" + id + "'><p>" + tabContentHtml + "</p></div>");
            tabs.tabs("refresh");
            tabs.tabs("option", "active", tabCounter - 1);

            if (solved == 0) {
                mostrar('newTab');
                mostrarFinal();
            }
        } else {
            window.alert('En este ejercicio sólo se permiten manejar tres pestañas.');
        }
    });
 
    tabs.unbind("click").delegate("span.ui-icon-circle-close", "click", function() {
        if (tabCounter > 1) {
            tabCounter--;
            var panelId = $( this ).closest("li").remove().attr("aria-controls");
            $("#" + panelId ).remove();
            tabs.tabs("refresh");

            if (solved == 2) {
                mostrar('closeTab');
                mostrarFinal();
            }
        } else {
            window.alert('En este ejercicio no se permite cerrar todas las pestañas.');
        }
    });
    
    tabs.find( ".ui-tabs-nav" ).sortable({
        axis: "x",
        stop: function() {
            tabs.tabs( "refresh" );
            if (solved == 1) {
                mostrar('moveTab');
                mostrarFinal();
            }
        }
    });
}

var solved = 0;
function mostrarFinal() {
    if (++solved == 3) {
        mostrar('final');
    }
}

function login() {
	var parametros = {
		"username" : $('#user').val(),
		"password" : $('#pass').val()
	};
	$.ajax({
		data:  parametros,
		url:   'php/login.php',
		type:  'post',
		success:  function (response) {
			if(response == 'OK'){
				loadLastPage();
				$('#usuario').load(location.href + ' #usuario');
			} else {
				alert(response);
			}
		}
	});
}

function register(){
	var parametros = {
		"nombre" : $('#nombre').val(),
		"apellido" : $('#apellido').val(),
		"usuario" : $('#user').val(),
		"password" : $('#pass').val(),
		"repassword" : $('#confirm').val()
	};
	$.ajax({
		data:  parametros,
		url:   'php/register.php',
		type:  'post',
		success:  function (response) {
			if(response == 'OK'){
				loadLastPage();
				$('#usuario').load(location.href + ' #usuario');
			} else {
				alert(response);
			}
		}
	});
}

var creado = false;
function nombreIcono(event) {
	var code = (event.keyCode || event.which);
    if (code == 13) {
        if (esTextoVacio('txt')) {
            alert('Por favor ingrese un nombre.');
            enfocar('txt');
        } else {
            NombreImagen('lbl', 'txt');
            excluir('txt');
            incluir('lbl');
            if (!creado) {
                creado = true;
                mostrar('creado');
                disable('crear');
            } else {
                creado = false;
                mostrar('renombrado');
                disable('renombrar');
            }
        }
    } else {
        teclaArchivo(event);
    }
}

function buscar(id) {
    if(esTextoVacio(id)) {
        window.alert('Por favor escriba algo dentro de la caja de texto.');
        enfocar(id);
    } else {
        BuscarEnGoogle(id);
        mostrar('felicitacion');
    }
}

$( function() {
    var targets = $( '[rel~=tooltip]' ),
        target  = false,
        tooltip = false,
        title   = false;
 
    targets.bind( 'mouseenter', function() {
        target  = $( this );
        tip     = target.attr( 'title' );
        tooltip = $( '<div id="tooltip"></div>' );
 
        if( !tip || tip == '' )
            return false;
 
        target.removeAttr( 'title' );
        tooltip.css( 'opacity', 0 )
               .html( tip )
               .appendTo( 'body' );
 
        var init_tooltip = function() {
            if( $( window ).width() < tooltip.outerWidth() * 1.5 )
                tooltip.css( 'max-width', $( window ).width() / 2 );
            else
                tooltip.css( 'max-width', 340 );
 
            var pos_left = target.offset().left + ( target.outerWidth() / 2 ) - ( tooltip.outerWidth() / 2 ),
                pos_top  = target.offset().top - tooltip.outerHeight() - 20;
 
            if( pos_left < 0 ) {
                pos_left = target.offset().left + target.outerWidth() / 2 - 20;
                tooltip.addClass( 'left' );
            } else
                tooltip.removeClass( 'left' );
 
            if( pos_left + tooltip.outerWidth() > $( window ).width() ) {
                pos_left = target.offset().left - tooltip.outerWidth() + target.outerWidth() / 2 + 20;
                tooltip.addClass( 'right' );
            } else
                tooltip.removeClass( 'right' );
 
            if( pos_top < 0 ) {
                var pos_top  = target.offset().top + target.outerHeight();
                tooltip.addClass( 'top' );
            } else
                tooltip.removeClass( 'top' );
 
            tooltip.css( { left: pos_left, top: pos_top } )
                   .animate( { top: '+=10', opacity: 1 }, 50 );
        };
 
        init_tooltip();
        $( window ).resize( init_tooltip );
 
        var remove_tooltip = function() {
            tooltip.animate( { top: '-=10', opacity: 0 }, 50, function() {
                $( this ).remove();
            });
 
            target.attr( 'title', tip );
        };
 
        target.bind( 'mouseleave', remove_tooltip );
        tooltip.bind( 'click', remove_tooltip );
    });
});

$(function() {
    $( document ).tooltip({
        track: true
    });
});

function tripleClic(event){
	if (event.detail == 3) {		
		if (getCookieValue('nav') == 'chrome') {
			window.getSelection().removeAllRanges();
			var range = document.createRange();
			range.selectNode(document.getElementById('parrafo'));
			window.getSelection().addRange(range);
		}
		mostrar('tripleclic');
	}
}